package com.mastercard.assets.web.struts.actions;

import com.mastercard.assets.MasterCardException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.mastercard.assets.jpa.TblAsset;
import com.mastercard.assets.jpa.TblCategoria;
import com.mastercard.assets.jpa.TblCuenta;
import com.mastercard.assets.jpa.TblPaquete;
import com.mastercard.assets.jpa.TblSubcateg;
import com.mastercard.assets.jpa.TblTipoCuenta;
import com.mastercard.assets.util.MCUtil;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.struts.forms.AssetAltaForm;
import com.mastercard.assets.web.struts.forms.AssetAsignarPaquetesForm;
import com.mastercard.assets.web.struts.forms.AssetBorrarForm;
import com.mastercard.assets.web.struts.forms.AssetBuscarForm;
import com.mastercard.assets.web.struts.forms.AssetEditarForm;
import com.mastercard.assets.web.struts.forms.AssetModificarPaquetesForm;
import com.mastercard.assets.web.struts.forms.CatalogoNuevoItemForm;
import com.mastercard.assets.web.struts.forms.LoginForm;
import com.mastercard.assets.web.util.to.UserLogin;

public class SolicitarPaqueteBuscarPaquetes
	extends
		Action
{
	public ActionForward execute(
							ActionMapping mapping , 
							ActionForm form ,
							HttpServletRequest request , 
							HttpServletResponse response )
		throws 
			IOException , 
			ServletException, 
			MasterCardException
	{
		System.out.println( "Entra a SolicitarPaqueteBuscarPaquetes" ) ;
		
		HttpSession session = request.getSession( ) ;
		
		// en caos de null
		if( session == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el userLogin
		UserLogin user = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
		
		// en caso de null
		if( user == null )
			return mapping.findForward( "noLogin" ) ;
		
		// busca los paquetes de acuerdo al tipo de cuenta al que pertenezca
		
		// tom ael tipo de cuenta al que pertenece
		TblTipoCuenta tipoCuenta = user.getActualCountType( ) ;
                
                // en caso de null
		if( tipoCuenta == null || tipoCuenta.getStatus( ) != 1 )
			return mapping.findForward( "NoCounts" ) ;
                
                // toma solo el campo de la clave de tipo cuenta
//                y no todo el registro
                int cveCuenta = tipoCuenta.getCveTipoCuenta();
		
		System.out.println( "Tipo de cuenta: " + cveCuenta ) ;		
			
		// en caso de no null, trae las cuentas
		List< TblCuenta > cuentas = tipoCuenta.getTblCuentas( ) ;
                System.out.println( "Tamanio de cuentas: " + cuentas.size( ) ) ;
                
                List< TblCuenta > cuentasActivas = MasterCardDAO.getAllActiveCountsWithCountType( cveCuenta ) ;
		System.out.println( "Tamanio de cuentas Activas: " + cuentasActivas.size( ) ) ;
                
                MasterCardDAO.closeEntityManager( ) ;
		
		// en caso de que no haya cuentas
		if( cuentasActivas == null || cuentasActivas.size( ) < 2 )
		{
			return mapping.findForward( "NoCounts" ) ;
		}
		// en caso de mas cuentas
		else
		{
			CatalogoNuevoItemForm f1 = new CatalogoNuevoItemForm( ) ;
                        int cuentaQEnvia = user.getActualCountId( ) ;
                        System.out.println( ":::: Id de cuenta actual::: " + cuentaQEnvia );
                        			
			f1.setCampoInt1( user.getActualCountId( ) ) ;
			
			request.setAttribute( "SolicitarPaqueteElegirCuentaForm" , f1 ) ;
			
			return mapping.findForward( "VariousCounts" ) ;
		}
	}
	
}
